草庐IT

javascript oop、instanceof 和基类

全部标签

接口(interface)/基类中的 C# 枚举?

我对枚举有疑问我需要在基类或接口(interface)中创建一个枚举(但为空)classBase{publicenumTest;//???}然后在一些父类中进行不同的枚举classParent1{publicenumTest{A,B,C};}classParent2{publicenumTest{J,H,K};}现在当我必须使用枚举时,我有下一节有方法的课classTest{publicvoidFoo(Testenum){intvalue=(int)enum;//...}}有什么办法可以做到这一点吗?如果不是,我必须在每个类中使用静态整数...classParent1{publicst

c# - 基类包含字段但类型与控件类型不兼容

Thebaseclassincludesthefield'lbl',butitstype(web.App_Code.CustomLabelControl)isnotcompatiblewiththetypeofcontrol(web.App_Code.CustomLabelControl).我以前用同样的方法做过很多自定义控件,但今天我遇到了这个错误。我有一个Web应用程序项目,在App_Code目录中有以下类,在web.config中为类中的控件引用了一个标签前缀。我现在该怎么办?Web.Config...标记类文件namespaceweb.App_Code{publicclassC

C# 私有(private)(隐藏)基类

是否可以使C#基类仅在其编译到的库程序集中可访问,同时使从它继承的其他子类公开?例如:usingSystem.IO;classBaseOutput:Stream//Hiddenbaseclass{protectedBaseOutput(Streamo){...}...lotsofcommonmethods...}publicclassMyOutput:BaseOutput//Publicsubclass{publicBaseOutput(Streamo):base(o){...}publicoverrideintWrite(intb){...}}在这里,我希望我的库的客户端无法访问Ba

c# - 如何从派生类中获取基类实例

我不知道这是否可行,但我正在尝试从派生类中获取基类实例。在C#中,我可以使用base关键字来访问基类的属性和方法(当然),但我想使用base本身。尝试这样做会导致“在此上下文中使用关键字‘base’无效”。示例代码publicclassSuperParent{publicintSPID;publicSuperParent(){}}publicclassSubChild:SuperParent{publicSubChild(intpSPID){base.SPID=pSPID;}publicintBaseSPID{get{SuperParentsp=base;returnsp.SPID;}

c# - 在基类中定义的 log4net 记录器

我想像这样在我的MVCController抽象基类中构建我的log4net记录器:protectedstaticreadonlyILogLog=LogManager.GetLogger(typeof(AuthorizedController));以这种方式,我可以一次定义记录器并完成它。唯一的问题是日志输出中的记录器属性将始终是AuthorizedController,如果我有FooController继承自AuthorizedController我想日志输出以反射(reflect)这一点。执行此操作的KISS、DRY和有效方法是什么? 最佳答案

C# 反射 - 派生类型中的基类静态字段

在C#中,当我反射(reflect)派生类型时,为什么看不到基类的静态字段?我已经尝试了type.GetFields(BindingFlags.Static)和type.GetFields()。 最佳答案 这就是它的工作原理。static成员实际上是非面向对象的东西。它们不是多态的,它们确实属于它们的声明类型,并且与继承层次结构中的其他类型无关。例如,在访问派生类中的静态成员之前,不需要运行基类的静态初始化程序。除非指定了BindingFlags.FlattenHierarchy,否则不会返回基类的static成员:type.Get

c# - 当基类中只需要依赖时,在基类中使用属​​性注入(inject)是否合适?

例子:publicabstractclassBaseControler:Controller{publicIUnitOfWorkUnitOfWork{get;set;}}publicclassHomeController:BaseControler{readonlyIUserRepository_userRepository;//:-)publicHomeController(IUserRepositoryuserRepository){_userRepository=userRepository;}}我们都知道,当需要依赖时,我们必须使用构造函数注入(inject)。如果它是一个可选

c# - 如何从基类中获取子类的 `Type`

我有一个抽象基类,我想在其中实现一个方法来检索继承类的特性属性。像这样的……publicabstractclassMongoEntityBase:IMongoEntity{publicvirtualobjectGetAttributeValue(stringpropertyName)whereT:Attribute{varattribute=(T)typeof(this).GetCustomAttribute(typeof(T));returnattribute!=null?attribute.GetType().GetProperty(propertyName).GetValue(a

c# - 具有通用测试的 Nunit 基类

我正在使用nunit为某些类做一些测试。有几个操作对所有测试类都是通用的,但需要不同的参数才能工作。所以我在基类中添加了测试,在基类中添加了虚方法来提供参数。在派生测试类中,我重写了虚拟方法以为基类中的测试提供特定参数。现在我的问题是我希望基类中的测试只从派生类中执行。我目前在基类上使用ignore属性来忽略测试,但这会在运行测试时引起一些警告,并且如果有许多被忽略的测试,则有一个策略不允许我将更改提交到svn。那么如何在不使用基类的ignore属性的情况下仅从派生类中的基类运行测试。 最佳答案 您应该能够将您的基类标记为抽象类,这

c# - 我应该在 Windows 服务中调用基类的方法吗?

从ServiceBase派生时,是否也应该调用基类的方法?protectedoverridevoidOnStart(string[]args){////ThestuffIdowhentheservicestarts.//base.OnStart(args);//DoIneedtocallthis?} 最佳答案 简短的回答是肯定的,你应该。在这种特定情况下,OnStart方法的基本实现不会做任何重要的事情,但这是一个可能随时更改的实现细节。作为一般做法,您应该始终调用基方法,除非您有充分的理由不这样做。